powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Забавная арифметика
8 сообщений из 8, страница 1 из 1
Забавная арифметика
    #32232267
Фотография Albert Gor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
?&HF
  15  
?&HFF
  255  
?&HFFF
  4095  
?&HFFFF
- 1  
?&HFFFFF
  1048575  


Использовалось окошко Immediate свежесозданной mdb на Access 2000.
...
Рейтинг: 0 / 0
Забавная арифметика
    #32232272
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага, такой феномен только на вежесозданной и удается воспроизвести...
...
Рейтинг: 0 / 0
Забавная арифметика
    #32232278
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Действительно любопытно. Причем границы обнаружились вот где:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
?&H7FFF
  32767  
?&H8000 
- 32768  

?&H0FFFF
- 1  
?&H10000
  65536  


И в то же время в обратную сторону все работает нормально:

Код: plaintext
1.
2.
3.
?Hex( 32768 )
 8000 
?Hex( 65535 )
FFFF
...
Рейтинг: 0 / 0
Забавная арифметика
    #32232282
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не хочу никому хамить, но константа вроде указана без спецификатора длины (& = long), а значит - тип integer - 16 бит.

?&HFFFFF - в integer не лепится и преобразуется в long - 32 бита.

Саныч абсолютно правлильно границу нащупал.

Код: plaintext
1.
? &HFFFF&
  65535  
...
Рейтинг: 0 / 0
Забавная арифметика
    #32232285
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
То есть от 2^15 до 2^16-1 считается, что в Integer лепится, несмотря на то что этот Integer получается отрицательный. Нестыковочка-с у Аксесса...
...
Рейтинг: 0 / 0
Забавная арифметика
    #32232294
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для шестнадцатеричного представления знак не важен, это просто состояния бит, если рассматривать это же число как беззнаковое, то там будут значения от 0 до 2^16-1 и все - положительные.

&HFFFF по синтаксису VB это целое число (причем тут знак???)
&HFFFF& а это уже long (& - спецификатор, хотя указаны те же цифры.)

аналогично
1.23 - float, 1.23# - double.

А где нестыковка? Это просто способ задавать тип константы!
...
Рейтинг: 0 / 0
Забавная арифметика
    #32232299
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет нестыковки у асеса, vdimas прав
Не задаете тип константы явно - будьте готовы к тому, что аксес его (тип) сам проинтуичит. Мнение редакции может не совпадать с мнением аксеса.
Отрицательные, положительные - какая ему (аксесу) разница. Это все фантазии человеческого мозга.
...
Рейтинг: 0 / 0
Забавная арифметика
    #32232302
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Действительно. :^)

Код: plaintext
1.
2.
3.
?&H8000&
  32768  
?&H0FFFF&
  65535  


То есть получаем несколько зон:

1. До 7FFF - лезет в Integer, бит знака 0, получается положительное число.

2. До FFFF - тоже лезет в Integer, но бит знака -1, получается отрицательное число. Чтобы получилось положительное, надо пользоваться Long.

3. До 7FFFFFFF - в Integer не лезет, автоматом интерпретируется как Long, бит знака 0, получается положительное число.

4. До FFFFFFFF - аналогично, Long, бит знака -1, получается отрицательное число.

5. Далее - не лезет никуда. Попытки запихать в Single или Double проваливаются - как и для предыдущей группы.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Забавная арифметика
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]