Философское. TRUE = -1

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...

Устраивает ли вас то, что TRUE=-1

1
9
26%
0
15
44%
-1
10
29%
 
Всего голосов : 34

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Философское. TRUE = -1

Сообщение PUNK-GRUNGER » 27.04.2006 (Чт) 0:01

Кто нибудь может придумать или более внятно мне объяснить - зачем (и почему) vb.NET продолжил, на мой взгляд, гадкую тенденцию с типом boolean? Ну почему во всех нормальных языках (которые потом стучатся в CLR.. или же совсем не связаны с .NET FRAMEWORK) ТРУ равен 1, а ФОЛС нулю? Зачем васику эта минус единица? Какая ее задача, кому от нее хорошо?

А как с ней бороться?
Привычки менять не хочется...
Math.Abs(Cint(True))
Ну это слишком... :-)

Все. Высказался. Нормального ответа на этот вопрос нигде не слышал.
P.S. Искал куда запостить тему... вроде про vb.NET, а вроде ... хз вобщем...

P.P.S. ПРи таких раскладах меняется смысл афоризма: есть 10 типов людей - понимающие двоичную систему и нет.
«Каждому программисту ЭВМ выдает то, что он заслуживает» (c)

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 27.04.2006 (Чт) 0:36

Потому что с точки зрения VB6 True это FFFFFFFFh.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 27.04.2006 (Чт) 0:38

PUNK-GRUNGER
by Design

FAKK2
Нет Булев это один байт, четыре байта резервировать - глупо
те -1 = FF
Последний раз редактировалось Wild VB Code for Food 27.04.2006 (Чт) 8:57, всего редактировалось 1 раз.
Лучше думать чем жевать.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 3:20

Да ну?
MSDN писал(а):Boolean variables are stored as 16-bit (2-byte) numbers
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 27.04.2006 (Чт) 6:08

А меня учили (для ВБ) 0-False, остальное-True.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 6:12

Неточно учили.
0 приводится к false, остальное приводится к true. Не более того.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 27.04.2006 (Чт) 6:17

GSerg, в обратную сторону преобразовывать мне как-то в голову не приходило... :wink: Иначе бы написал так:
Код: Выделить всё
If Bool = False then
int = 0
else
int = 1 ' или -1, или еще что-то, как кому надо...
end if

Я думаю проблем в этом случае быть не должно...
Последний раз редактировалось Matew 27.04.2006 (Чт) 10:23, всего редактировалось 1 раз.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 27.04.2006 (Чт) 10:20

Matew
Твой код рассматривает True, как 0
Изображение

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 27.04.2006 (Чт) 10:23

keks-n, :D уже правлю :D .
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 27.04.2006 (Чт) 10:28

кто скачал что булев unsigned?
Лучше думать чем жевать.

Captain
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 04.02.2005 (Пт) 21:50
Откуда: Moskau

Re: Философское. TRUE = -1

Сообщение Captain » 27.04.2006 (Чт) 12:54

PUNK-GRUNGER писал(а):Ну почему во всех нормальных языках (которые потом стучатся в CLR.. или же совсем не связаны с .NET FRAMEWORK) ТРУ равен 1, а ФОЛС нулю? Зачем васику эта минус единица? Какая ее задача, кому от нее хорошо?


Всё просто...

False=0
True = Not False

а т.к. логические операции в ВБ поразрядные, то получается что

True = &HFFFFFFFF = -1

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 27.04.2006 (Чт) 15:06

где вариант ответа опроса "-1"???
ХЎ

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 27.04.2006 (Чт) 16:54

True = 65535, хотя странно что булев - двабайта, слегка неразумно, даже в плане совместимости, в Си - булев unsigned char
Лучше думать чем жевать.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 27.04.2006 (Чт) 22:26

где вариант ответа опроса "65535"?
ХЎ

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 28.04.2006 (Пт) 0:23

Внимательно вчитайтесь в вопрос :):
устраивает ли Вас, что TRUE=-1

И варианты ответов, среди которых "0" и "-1" мне понятны :), т.к. означают, соответственно, "нет" (в смысле не устраивает) и "да" (устраивает :)). Но что в таком случае означает "1"? Это модальная логика :)? Или что-то ещё :)?

P.S. Прошу серьёзно не реагировать :).
С уважением, Approximator.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 28.04.2006 (Пт) 1:05

Approximator писал(а):Но что в таком случае означает "1"? Это модальная логика :)? Или что-то ещё :)?


Нет, это доп. редакция модераторов/админов...

Напомнило :)

Компьютерная библия писал(а):1. В начале было слово, и слово было два байта, а больше ничего не было.

2. И отделил Бог единицу от нуля, и увидел, что это хорошо.

3. И сказал Бог: да будут данные, и стало так.

4. И сказал Бог: да соберутся данные каждые в свое место, и создал дискеты, и винчестеры, и компакт-диски.

5. И сказал Бог: да будут компьютеры, чтобы было куда пихать дискеты, и винчестеры, и компакты, и сотворил компьютеры, и нарек их хардом, и отделил хард от софта.

6. Софта же еще не было, но Бог быстро исправился, и создал программы большие и маленькие, и сказал им: плодитесь и размножайтесь, и заполняйте всю память.

7. Но надоело Ему создавать программы самому, и сказал Бог: создадим программиста по образу и подобию нашему, и да владычествует он над компьютерами, и над программами, и над данными. И создал Бог программиста, и поселил его в своем ВЦ, чтобы работал там. И повел Он программиста к дереву каталогов, и заповедал: из всякого каталога можешь запускать программы, только из каталога Windows не запускай, ибо мастдай.

8. И сказал Бог: не хорошо программисту быть одному, сотворим ему пользователя, соответственно ему. И взял Он у программиста кость, в коей не было мозга, и создал пользователя, и привел его к программисту; и нарек программист его юзером. И сидели они оба под голым ДОСом, и не стыдились.

9. Билл был хитрее всех зверей полевых. И сказал Билл юзеру: подлинно ли сказал Бог "не запускайте никакого софта"? И сказал юзер: всякий софт мы можем запускать, и лишь из каталога Windows не можем, ибо мастдай. И сказал Билл юзеру: давайте спорить о вкусе устриц с теми, кто их ел! В день, когда запустите Windows, будете как боги, ибо одним кликом мышки сотворите что угодно. И увидел юзер, что винды приятны для глаз и вожделенны, потому что делают ненужным знание, и поставил их на свой компьютер; а затем сказал программисту, что это круто, и он тоже поставил.

0A. И отправился программист искать свежие драйверы, и воззвал Бог к программисту и сказал ему: где ты? Программист сказал: ищу свежие драйверы, ибо нет их под голым ДОСом. И сказал Бог: кто тебе сказал про драйверы? уж не запускал ли ты винды? Программист сказал: юзер, которого Ты мне дал, сказал, что отныне хочет программы только под винды, и я их поставил. И сказал Бог юзеру: что это ты сделал? Юзер сказал: Билл обольстил меня.

0B. И сказал Бог Биллу: за то, что ты сделал, проклят ты пред всеми скотами и всеми зверями полевыми, и вражду положу между тобою и программистом: он будет ругать тебя нехорошими словами, а ты будешь продавать ему винды.

0C. Юзеру сказал: умножу скорбь твою и истощу кошелек твой, и будешь пользоваться кривыми программами, и не сможешь прожить без программиста, и он будет господствовать над тобой.

0D. Программисту же сказал: за то, что послушал юзера, прокляты компьютеры для тебя; глюки и вирусы произведут они тебе; со скорбью будешь вычищать их во дни работы твоей; в поте лица своего будешь отлаживать код свой.

0E. И выслал Бог их из своего ВЦ, и поставил пароль на вход.

0F. General protection fault.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 28.04.2006 (Пт) 1:48

BV писал(а):
Approximator писал(а):Но что в таком случае означает "1"? Это модальная логика :)? Или что-то ещё :)?


Нет, это доп. редакция модераторов/админов...

Это не так (в смысле, именно этот вариант ответа является авторским, а вовсе не модерским). Но мой вопрос был не про то, кто этот вариант ответа написал, а про то, что этот вариант ответа может означать?...
С уважением, Approximator.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 28.04.2006 (Пт) 3:06

Approximator писал(а):Но мой вопрос был не про то, кто этот вариант ответа написал, а про то, что этот вариант ответа может означать?...


Видимо, True :)

Изначально было только два варианта: 1 и 0.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 28.04.2006 (Пт) 9:35

Approximator писал(а):Внимательно вчитайтесь в вопрос :):
устраивает ли Вас, что TRUE=-1

И варианты ответов, среди которых "0" и "-1" мне понятны :), т.к. означают, соответственно, "нет" (в смысле не устраивает) и "да" (устраивает :)). Но что в таком случае означает "1"? Это модальная логика :)? Или что-то ещё :)?

P.S. Прошу серьёзно не реагировать :).

наверное вариант "а мне - до фени!"
"There's more than one way to do it!"

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Сообщение PUNK-GRUNGER » 28.04.2006 (Пт) 9:37

Так.. хм :) Просто, для меня один всегда тру. А ноль всегда брэхня :) ИМХО, -1 там определенно мешает ) Но люди голосуют, значит этот каприз оказался только у меня.

P.S. Поскольку ТРУ это НОТ ФОЛС. Значит вариант ответа 1, который является по сути НОТ ФОЛС и есть ТРУ :) Т.е. ДА (устраивает). Опять неразбериха... надо было ТРУ и ФОЛС в вариантах писать :)
«Каждому программисту ЭВМ выдает то, что он заслуживает» (c)

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 29.04.2006 (Сб) 0:28

Tuco писал(а):
Approximator писал(а):Внимательно вчитайтесь в вопрос :):
устраивает ли Вас, что TRUE=-1

И варианты ответов, среди которых "0" и "-1" мне понятны :), т.к. означают, соответственно, "нет" (в смысле не устраивает) и "да" (устраивает :)). Но что в таком случае означает "1"? Это модальная логика :)? Или что-то ещё :)?

P.S. Прошу серьёзно не реагировать :).

наверное вариант "а мне - до фени!"


Т.е. всё-таки это модальная логика? :)
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 29.04.2006 (Сб) 0:42

PUNK-GRUNGER писал(а):Так.. хм :) Просто, для меня один всегда тру. А ноль всегда брэхня :) ИМХО, -1 там определенно мешает ) Но люди голосуют, значит этот каприз оказался только у меня.

P.S. Поскольку ТРУ это НОТ ФОЛС. Значит вариант ответа 1, который является по сути НОТ ФОЛС и есть ТРУ :) Т.е. ДА (устраивает). Опять неразбериха... надо было ТРУ и ФОЛС в вариантах писать :)


Всё-таки твой вопрос относится к области конвенциальных. Таким образом, вопрос о том, какое численное значение соответствует (мат.) бинарным булевым. Конвециально (речь не идёт о безупречной логической обоснованности, это всего лишь договорённость) было положено -1 (причём, на уровне конвенции констант Wind'ы!).

Пытаться апеллировать к булевой "алгебре" здесь бессмысленно (хотя бы потому, что она не является в мат. смысле кольцом, а всего лишь полукольцом, т.к. относительно сложения в ней нет элемента обратного "1"; т.е. в булевой алгебре "единица" не является ни отрицательно, ни положительно определённой; можно, конечно, волюнтаристки упорядочить числовое множество, но это тоже будет всего лишь конвенция!).
С уважением, Approximator.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 29.04.2006 (Сб) 9:06

Пытаться апеллировать к булевой "алгебре" здесь бессмысленно
Н-да? Вы никогда не пробовали изучать ассемблер(хотя бы основы). Сразу становится понятно, что not False это именно -1(в знаковом представлении), а не что другое. И не потому что это конвенция винды, а потому что так процессор IA-32 устроен ;)
И что такое модальная логика в конце концов?? Типа логика с алгебраическим модулем?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 29.04.2006 (Сб) 9:33

ИМХО True это не -1, а вполне обьяснимое &HFFFF шестнадцать абсолютно нормальных едениц. И они так и остаются шестнадцатью еденицами, как их не представляй.

True это не not(0), а not(&H0000) что естественно является &HFFFF Главное не путать число с его представлением.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.04.2006 (Сб) 9:46

вернее 16 абсолютно нормальных двоичных единиц, а то мало ли как кто подумает :D
Весь мир матрица, а мы в нем потоки байтов!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 29.04.2006 (Сб) 10:28

True это не not(0), а not(&H0000)
И в чем разница :lol: ?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 29.04.2006 (Сб) 10:45

Я думаю ты прекрасно понял о чем я писал. Не ноль в булевой математике и не два байта нулей - разные вещи.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 29.04.2006 (Сб) 10:53

Запись числа не имеет, вообще-то, никакого отношения к тому, каков размер этого числа. Мы уже установили, что boolean занимает два байта.
А если так, то 0, &h00, &h0000 ну и &h00000000000000000000 это одно и то же.
Кроме того
ИМХО True это не -1, а вполне обьяснимое &HFFFF
Как тут кто-то сказал
Главное не путать число с его представлением
Опять же, для двухбайтовых чисел &HFFFF=-1 :)
Ну и еще, к вопросу о том, почему именно -1. Не забывайте, что у микропроцессора IA-32 нету отдельных команд для логической арифметики. Для нее используются побитовые команды. А они будут давать весьма интересные результаты, если им в качестве TRUE подсовывать, скажем, 1 или что-то другое.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.04.2006 (Сб) 11:00

Читаю топик и думаю: http://www.bash.org/?10958
Вот.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 29.04.2006 (Сб) 11:17

Мдя... ANDLL, или у меня с чувством юмора плохо, или ты действительно не понимаешь, что я хотел сказать.

Написав &h0000 я планировал только обратить внимание на то, что Это не ноль, а два байта нулей. Если это так непонятно, то уж извиняйте. Если тебе важен не смысл сообщения, а его оформление, то мои постинги не читай никогда пожалуйста.

Написав что:
ИМХО True это не -1, а вполне обьяснимое &HFFFF

Я всего лишь, планировал сказать, что для процессора понятия -1 нет. Для него есть &HFFFF (могу выписать 16 едениц. Надо?) - и это кстати далеко не -1. Оно вполне может быть и 65535 и чем угодно еще в зависимости от желаний программиста.

След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 139

    TopList