Битовая сумма id 
		
		
		
		Всем привет.  
	Подключаюсь к одной апишке и есть такая тема - есть пост запрос с формы - в форме есть мультиселект - Тип кузова - отправлять нужно id кузовов - но не в массиве а битовую сумму id кузовов и тип int64 Что это значит и зачем так сделано, почему не массив?  | 
	
		
 Цитата: 
	
 Цитата: 
	
 PS. Я могу и ошибаться, но скорее вы не так трактуете задачу и речь идет не о сумме бит, а побитовом ИЛИ, то есть сложении. При этом значения списка, это не id, а значения поля типа SET, которые представляют бит с шагом степени 2, то есть 1, 2, 4, 8, .... К примеру если будут выбраны 2 и 3 опции, то результат будет: 0010 0100 ------ 0110 = 6 что и требуется для записи в базу.  | 
	
		
 laimas, 
	id - обычное число - например 1, 2, 54, 63 и даже такие 131072 - это чисто их внутренний учет айдишек. Вот несколько таких значений нужно отправлять, или одно значение если выбран один тип кузова.  | 
	
		
 Цитата: 
	
 Например, в базе будет так 1 - Первый 2 - Второй ...... Также хранится и ENUM, но в нем можно выбрать одно значение из множества, а в SET многое из множества, поэтому и сумма. Сделайте побитое ИЛИ над значениями выбранных опций, получится то, что требуется.  | 
	
		
 если там тип int то значит сложить их вместе 
	 | 
	
		
 Цитата: 
	
 
var sum = [...document.querySelectorAll('[selected]')].reduce((a, b) => a | b.value, 0)
нежели 
var sum = [...document.querySelectorAll('[selected]')].reduce((a, b) => a += +b.value, 0)
 | 
	
		
 Vlasenko Fedor, 
	int64 - и в описании просто написано без примера - Битовая сумма id кузовов а сложить вместе тоже есть такое поле - тип загрузки вот там тип int Вот его описание из документации Битовая сумма id типов загрузки. Например: только "Верхняя" будет иметь значение 1; "Верхняя", "Боковая" и "Со снятием стоек" имеют значение 67 (1 + 2 + 64) Вот там айдишки идут - 1 2 4 8 16 32 64 128 и т.д  | 
	
		
 Впрочем в типе кузова то же самое, сразу не обратил внимание - они просто перемешанные. 
	 | 
	
		
 Цитата: 
	
 http://www.mysql.ru/docs/man/SET.html А битовая сумма, это сумма бит в числе, есть такое понятие, посмотреть можно например тут https://neerc.ifmo.ru/wiki/index.php...ераци - Подсчет количества единичных битов  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 смысл не в этом, смыл хранить значения характеристик одним числом обычным интом в базе. так делают с фильтрами, поиском по ним используя битовые операции в базе  | 
	
		
 Цитата: 
	
  | 
	
		
 Vlasenko Fedor, 
	laimas, спасибо за подсказки, с меня + в карму. как оказалось и в типе кузова и в типе загрузки нужна просто сумма id. То что они делают побитово в бд это уже их проблемы - зачем они это прописали в апи для фронта хз. Да и сама документация к апи на коленке написана.  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 alert(Math.log(Number.MAX_SAFE_INTEGER) / Math.log(2));Если же говорить про целые числа, то в них можно описать сколь угодно сложные маски — например, одна 256-битная маска может описывать все типы в форме, свойства товара и пр.  | 
	
		
 О битовой маске можно вести речь в контексте операций с множеством - выборка, поиск, фильтрация. А сумма значений, это просто набор выбранных значений множества. 
	 | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
| Часовой пояс GMT +3, время: 04:29. |