Скока байт в Interger?

Windows лучше чем Linux! Чем? Ясно же написано — чем Linux!
Раздуй свой холивар сегодня, потому что завтра это может сделать уже кто-то другой!
Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Скока байт в Interger?

Сообщение Q2W » 29.09.2006 (Пт) 5:07

Я вот тут недавно узнал, что оказываецца в ДОСе в интеджере было 2 байта, в 32-х битных системах - 4, а в 64-х битных - 8.

Спрашиваецца: зачем такое шшастье?
Что, разве 64 бита придумали, чтоб я смог в регистры запихать большой интеджер?
Если я хочу интеджер - он должен быть в любой системе одного размера, не так ли?

Вообще не правильней и логичней было бы объявление переменных с чётким указанием их размера (или флага что он изменяемый, для строк, например).

Вот объявил бы я переменную в 2 байта беззнаковую - и думать ни о чём не надо, и компилятор сам сообразит скока таких переменных можно за раз в стек запихать!

Я, наверное где-то ошибаюсь? Где?
Я знаю верный путь

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 29.09.2006 (Пт) 5:09

P.S.: не ожидал я, что топик будет в Холиварсах. Думал вопросы просто так.
Я знаю верный путь

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Скока байт в Interger?

Сообщение tyomitch » 29.09.2006 (Пт) 5:20

Q2W писал(а):Спрашиваецца: зачем такое шшастье?
Что, разве 64 бита придумали, чтоб я смог в регистры запихать большой интеджер?

А зачем тогда?

(См. тж. классический топик про пять истинных типов данных)
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Re: Скока байт в Interger?

Сообщение Q2W » 29.09.2006 (Пт) 6:32

tyomitch писал(а):
Q2W писал(а):Спрашиваецца: зачем такое шшастье?
Что, разве 64 бита придумали, чтоб я смог в регистры запихать большой интеджер?

А зачем тогда?


Если мне нужна 8-и байтная переменная, я её объявлю. И надеюсь, кстати, что она будет 8-и байтной и в 32-х, и в 64-х битных системах.
Если я пишу прогу, я использую в переменной ровно столько байт, чколько заявил. А тут получаецца, что в 64-х битных системах их в 2 раза больше. Не нужное расходование памяти.

Вообще я думал, что 64-х битные системы придумали, чтоб они быстрей работали (типа за один такт больше команд успевали выполнять), а не чтоб больше данных хранить. Зачем гонять туда-сюда лишние 4 байта (в случае с интеджер)?

Посмотрел на жуткую и совершенно ненаучную полемику по приведённой тобой ссылке, нашёл
Есть 6 типов, с которыми может работать процессор:


Это, я так понимаю, и 32-х битный, и 64-х битный проц будет использовать одинаковое кол-во байт, или мне нужно учить мат.часть?
Я знаю верный путь

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

Сообщение GAGArin » 29.09.2006 (Пт) 6:40

Вообще я думал, что 64-х битные системы придумали, чтоб они быстрей работали (типа за один такт больше команд успевали выполнять), а не чтоб больше данных хранить. Зачем гонять туда-сюда лишние 4 байта (в случае с интеджер)?

А ты не задумывался почему они 64битные? Проц обрабатывает за такт 64бита, читай 8байт. Ну а раз он может обрабатывать 8, то логично этим пользоваться, иначе 64битность теряет смысл.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 29.09.2006 (Пт) 6:55

Дык а почему бы ему в эти 8 байт не загнать 2 интеджера?
Я знаю верный путь

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

Сообщение Viper » 29.09.2006 (Пт) 7:58

потому что на 64-разрядной винде регистры процессора 64-разрядные, потому то системный целый тип имеет размер 8 байт. Что впрочем не оменяет существование 4-байтных и 2-байтных целых
Весь мир матрица, а мы в нем потоки байтов!

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 29.09.2006 (Пт) 8:21

Я понимаю, что
целый тип имеет размер 8 байт

Я говорю не об этом. Я говорю:
Если я хочу интеджер - он должен быть в любой системе одного размера, не так ли?

гонять туда-сюда лишние 4 байта (в случае с интеджер)?

Можно было б загнать туда 2 4-х байтовые переменные.
Я знаю верный путь

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.09.2006 (Пт) 8:37

Если ты задаешь integer, то принимается именно столько, сколько на текущей системе принято за целое число. Т.е. это может быть два байта, может быть четыре, может быть восемь. И твоя программа не должна быть завязана на конкретные особенности процессора.
Если тебе нужно четыре байта, то объявляй четыре байта, dword.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.09.2006 (Пт) 10:12

Из жуткой и совершенно ненаучной полемики по приведённой мной ссылке надлежало сделать вывод, что о байтах в ЯВУ вообще не следует заботиться. Кому важен каждый байт, тот пусть пишет на ассемблере, и тогда он будет знать наверняка, какие типы у него есть и каких нет.

Ну вот какая тебе разница, на самом деле, сколько байтов занимает сишный интеджер? Да пусть он хоть в BCD хранится, твой-то код от этого никак не зависит.

А на самом деле, интеджер переменного размера нужен для переносимости программ. Чтобы моя программа, использующая этот интеджер, запустилась на любой машине с любым набором "истинных типов". Не обязательно даже двоичной.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.09.2006 (Пт) 10:28

Q2W писал(а):Дык а почему бы ему в эти 8 байт не загнать 2 интеджера?

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

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 29.09.2006 (Пт) 10:52

Q2W писал(а):P.S.: не ожидал я, что топик будет в Холиварсах. Думал вопросы просто так.


Мегалол.

Вспомнилась циатата с bashorg "why dont we take off the safety labels and let the problem solve itself" :)


Вернуться в Holy Wars@VBStreets

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

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

    TopList